package com.jielihaofeng.chat.localcache;

import java.util.List;

/**
 * Description: a simple description
 *
 * @author xieli
 * @version 1.0
 * @date 2022/10/3 4:52 PM
 * @since JDK 1.8
 */
public interface ILocalCache<K, V> {

    /** 分布式本地缓存刷新TOPIC */
    String NOTIFY_REFRESH_TOPIC = "local-cache-refresh-event";

    /**
     * 根据key获取value
     * @param k
     * @return
     */
    V get(K k);

    /**
     * 批量获取
     * @param ks
     * @return
     */
    List<V> getAll(List<K> ks);

    /**
     * 全量获取
     * @return
     */
    List<V> getAll();

    /**
     * 刷新本地缓存
     * @param event
     */
    void refreshAll(CacheRefreshEvent event);

    /**
     * 发布刷新事件
     * @param auto
     */
    void publishRefreshEvent(boolean auto);

    /**
     * 缓存类型定义
     * @return
     */
    String cacheType();

}
